Where should I start designing my software?

Asked

Viewed 162 times

4

I read an article by msdn about "overview of architecture software" and it seemed to me quite interesting showing part of the step by step to build a software, but I was in doubt about a question that:

"What are the application’s quality attribute requirements, such as security, performance, simultaneity, internationalization and configuration?"

What specifically does that mean before elaborating the software?

I also saw another article informing on how they can help build one software with their tools, so I made a list of what a
precise (based on what I read in this article), if I follow this step by step I can build a quality product? (Some parts I put on extra because I felt something was missing)

  1. Requirements Engineering

    1.1. Feasibility studies

    1.2. Identification

    1.3. Review and negotiation of requirements

    1.4. Specification and documentation

    1.5. Validation

    1.6. Management of Requirements

  2. Project setting

  3. Software Architecture

    3.1. How users will work with the app

    3.2. How the application will be deployed in production and managed?

    3.3. What are the application quality attribute requirements, such as security, performance, simultaneity, internationalization and configuration

    3.4. How to design the application so it is flexible and maintainable over time?

    3.5. What architectural trends can affect the application now or after it is deployed?

  4. Overview

  5. Methodologies

  6. Programming

  7. Testing

  8. End product

All this part of building software is a cake recipe or is different for each software where certain parts are not necessarily mandatory.

Source: Microsoft,Wikipedia

  • 1

    You know what software requirements are?

  • I do not have full knowledge on this subject unfortunately, just a preview on this. What indicates me reading?

  • 1

    Rodrigo, the way to "make software" changes every day, each company does one way, new companies, and traditional companies, startups, etc. Your response will be based on opinions, I believe this way coming out of the goal of the site, if any other user thinks different, I left your comment.

  • But isn’t there a logical line of reasoning or steps to be followed before any software construction (standardization or anything close to that)? I’m very confused, because coding something that has no objective or some orientation is very difficult, I thought in case we have something like this in our day to day, so we could organize better before performing a program, and already having a basis whether or not that particular idea would work.

  • 1

    Rodrigo, your question is interesting, very interesting, but it generates a lot of discussion, because each one has an experience and experience, there are lines that the theory says to follow, as described in your question, the site preaches that here is a place to respond and not to generate discussions, take a look at the [tour].

  • what you think @Maniero ?

  • 1

    There are a number of steps to be followed, but they are not rules, there are thousands of books and documents to assist in these processes and in the order we call EAP, the name for this is Project Management! and if it is a Startup (where I work) as David said, we follow the famous MVP (Minimum Viable Product) which is to do what is necessary, even with bugs and release, so that the user finds errors and on the way you fix and improve, read about "Lean Startup"If that’s the case, it’ll help you a lot!

  • 1

    Remembering that none of these are rules, are good practices, already studied processes that help you to get the best result, with quality quickly and that will help you to organize and not get lost the way.

  • 1

    A good study material is SWEBOK (Software Engineering Body of Knowledge). Download for free at: https://www.computer.org/education/bodies-knowledge/software-engineering

Show 4 more comments

1 answer

0


Initially speaking generally, the processes you should look for to get general and quick knowledge is about the 'software lifecycle', which is:

Requirements -> Analysis -> Project -> Coding -> Test -> Maintenance

Each of these steps has thousands of processes inside, many of them based on ISO, must follow some standards, I would recommend this SLIDE

"What are the application’s quality attribute requirements, such as security, performance, simultaneity, internationalization and configuration?"

Quality requirements we call "what is necessary to meet what the customer has requested" or what has been required, is a set of characteristics to be satisfied to a certain degree, so that the software product meets the explicit and implicit needs of its users, for example, if the customer asks you a project about something to "sit" you could only with this requirement make only a puff on the floor, without legs and without backrest, so the importance of requirements survey and project management, so that this is detailed and you can do something with quality, meeting the expectations for example safety, performance, etc.

By following this list you’ve been through, you won’t necessarily be able to meet and do something "quality" by staying within the norms and following important steps that will help you locate possible errors in the project.

If you want to do something with 'quality' lift up all the requirements to start, think about the unthinkable, and then recommend you to look about PMBOK, PMP, EAP, I studied a lot about college and will give you a much better way, including the PMBOK, this is Project Management.

  • Excellent answer. But you could give me more information about this part "Analysis -> Project -> Coding -> Test -> Maintenance". It would be interesting to specify a little about these parts, or even putting references on them.

  • Of course, this is the click of life, part of software engineering, are important, I recommend this article, is short and objective and gives you paths to follow: http://www.neomind.com.br:81/blog/cycle-pdca-continuous-improvement-of-processes/ and also https://www.oficinadanet.com.br/post/14645-guia-pmbok-lifecycle, pq life cycle? because life cycles will help you identify where you should start, where you should go back, and when you continue, if you have any more questions just comment here! , this article is also very illustrative: https://www.adonai.eti.br/2014/01/models/

  • Each topic of these as: "Incremental Model" "Prototyping" are matters and have their own contents, of course for a project YOUR you do not need to follow everything to do something "above" very shallow, following only the steps, without going too deep, if not you will spend a lot of time on the way, because this is all the work of a systems analyst, but it is up to you to decide this, whether you will spend more time documenting or coding, depends on your need

  • So, it’s just that it comes very privately for you to tell me if x or y should follow, but this project also wants to take great advantage both in the part of documentation, analysis and coding, because I realized that my greatest difficulty in trying to carry out a project, is to get lost away from him, not knowing after doing 5 functions in the system. Besides, I want to leave something well done as they say, the "me of the future" can take it all again. Where I work, I stand alone in this field of coding :/

  • 1

    So I recommend you start reading about MVP here are practical examples of what to do https://www.meupositivo.com.br/panoramapositivo/mvp/ and in the order you understand this you can read about PDCA: https://www.escolaedti.com.br/pdca, MVP and PDCA are two very simple things! that help you organize yourself mentally and organize the project, quickly and easily.

  • 1

    with MVP you would understand that for example, having 5 BASIC functionalities you can already send to the test, or run in the field, so, in the cycle, more needs would appear, in that you would come back and continue documenting and producing.

Show 1 more comment

Browser other questions tagged

You are not signed in. Login or sign up in order to post.