.NET, Xamarin, and mobile software development

A BLOG BY DAN HERMES

Agile Development Using .NET

18 June 20138 Comments

Software development is important to many of us, so we strive to find better ways to do it.

In the late 20th century we spent a great deal of time and money developing requirements and specifications, thinking through each case and documenting possible uses and outcomes. We would plan a glorious plan before beginning development.

Wait, that never happened.

Mainly we were given a few ideas to go on, then ran to the computer and wrote some code. The Waterfall ideal of design before coding was seldom a reality. Even when there was time to do this, the design had changed so drastically by the time we began coding that it seemed like the time spent planning was wasted. In the end, we would usually have to rewrite it anyway.

What we learned was this: requirements, specification, coding, and design are not separable. Though they can be distanced for a time by process and habit, we are eventually forced to work in a cyclical fashion, reworking the design as the coding unfolds and changing the requirements as the code revealed truths previously unknown. We learned that software development is not like a track race where the analyst completes their laps then passes the baton to the developer. We learned that development works more like an automobile race, where each of the four tires must rest firmly on the changing terrain at all times: requirements, specifications, design, and code. The user needs must steer the code, but it can also be propelled by the technical design and coding discoveries in directions that may not have been clear by requirements and specifications alone. We learned that we must design and build less code more quickly, with tighter feedback loops with the users and business stakeholders.

These new cycles result in new challenges:
1. How to keep a team in sync at high speed?
2. How to keep up with testing?
3. How to implement super-fast releases?
4. How to keep the code from becoming a mess?

Scrum addresses the team problem. User stories provide a lightweight requirements and specification framework. User acceptance tests and an on-site customer and product owner offer quick feedback on completed work. Extreme Programming(XP) offers solutions to cover the other bases: Test-driven Development(TDD) stepped in to tackle the testing issue, slimming down the QA step and bringing testing responsibilities back to the developer who implements them the way he knows best: in the code. The release problem is resolved by Continuous Integration(CI) allowing code changes to flow into production as quickly as the team can produce them. Then how to avoid sprint-induced spaghetti code? With refactoring, the steady and continuous reorganization of code keeps it pruned, organized, and under control. Design patterns provide direction for developers to follow while they refactor.

Microsoft Visual Studio .NET provides ways to help us do all these things, the agile way. Here are the .NET options, and a few non-.NET alternatives:

[…] Agile Development in .NET (Spring 2014) How to be agile using .NET? Most Agile methodologies used in .NET shops nationwide are variations of Scrum and Extreme Programming(XP). This booklet covers these tools and techniques: Test-driven Development (TDD), Behavior-driven Development (BDD), Continuous Integration (CI), and Refactoring to Patterns. slides from talk at .NET Saturday in Bermuda […]

For organizations which are confirmed selling tainted products via advanced chemical testing procedures, the consequences can vary from seizure of merchandise, cessation of sales, as well as on some occasions, prosecution. Once these companies happen to be selected as problematic by the FDA, the financial losses and attorney fees involved often force closure or bankruptcy. In the priority to protect consumers could be the mission with the FDA, honest organizations who inadvertently purchase tainted ingredients without intent or knowledge at times must close their business from financial losses. This harsh the fact is not the fault of the FDA, but to blame will be the national and international manufacturers tainting their formulas without the retailer knowledge and aiming to expand their market base of outlets worldwide by manufacturing tainted formulas.

Criminal law has attemptedto clarify the intent requirement by establishing two concepts, specific intent and general intent. Specific Intent refers to a particular mind-set that seeks to complete the particular act that the law prohibits. In a few circumstances, the category of specific intent means an intent to do something beyond that which is completed, such as assault with intent to commit rape. The prosecution must reveal that the defendant purposely or knowingly committed the crime at issue. Regarding a distributor or manufacturer being prosecuted using the legal meaning of specific intent, evidence must establish the individual and/or organization tainted their supplement formulas or purposely marketed and sold tainted supplements fully aware the chance to a targeted consumer or gang of consumers. Difficult is the second legal thought of intent called General Intent.